package raft

// 上下文表示服务器的当前状态。由于服务器方法
// 命令中。
// 被锁定，因此在应用该命令时，会将其传递到
type Context interface {
	Server() Server
	CurrentTerm() uint64
	CurrentIndex() uint64
	CommitIndex() uint64
}

// 上下文是上下文的具体实现。
type context struct {
	server       Server
	currentIndex uint64
	currentTerm  uint64
	commitIndex  uint64
}

// 服务器返回对服务器的引用。
func (c *context) Server() Server {
	return c.server
}

// CurrentTerm返回服务器所在的当前术语。
func (c *context) CurrentTerm() uint64 {
	return c.currentTerm
}

// CurrentIndex返回服务器所在的当前索引。
func (c *context) CurrentIndex() uint64 {
	return c.currentIndex
}

// CommitIndex返回服务器所在的最后一个提交索引。
func (c *context) CommitIndex() uint64 {
	return c.commitIndex
}
